package pe.edu.upc.dai.grupo4.service;

import java.util.List;
import pe.edu.upc.dai.grupo4.dao.UsuarioDao;
import pe.edu.upc.dai.grupo4.dao.UsuarioDaoImpl;
import pe.edu.upc.dai.grupo4.model.Usuario;

/**
 * Lógica de negocio de Usuarios
 * 
 * @author pcsilshi
 */
public class UsuarioServiceImpl extends BaseServiceImpl implements UsuarioService {

    private UsuarioDao usuarioDao;

    public UsuarioServiceImpl() {
        usuarioDao = new UsuarioDaoImpl();
    }

    public Usuario seleccionarPorUsuario(String usuario) {
        return usuarioDao.seleccionarPorUsuario(usuario);
    }

    public boolean validar(String usuario, String password) {
        Usuario usuarioControl = usuarioDao.seleccionarPorUsuario(usuario);
        return password.equals(usuarioControl.getPassword());
    }

    public int insertar(Usuario usuario) {
        return usuarioDao.insertar(usuario);
    }

    public int actualizar(Usuario usuario) {
        return usuarioDao.actualizar(usuario);
    }

    public void eliminar(Usuario usuario) {
        usuarioDao.eliminar(usuario);
    }

    public List<Usuario> seleccionarTodos() {
        return usuarioDao.seleccionarTodos();
    }

    public boolean cambiarContrasena(String username, String passwordOld, String passwordNew1, String passwordNew2) {
        boolean actualizado = false;
        Usuario usuario = this.seleccionarPorUsuario(username);
        if (usuario != null) {
            if (usuario.getPassword().equals(passwordOld)) {
                if (passwordNew1.equals(passwordNew2)) {
                    usuario.setPassword(passwordNew1);
                    this.actualizar(usuario);
                    actualizado = true;
                } else {
                    throw new RuntimeException("Nuevo password no coincide");
                }
            } else {
                throw new RuntimeException("Password incorrecto");
            }
        } else {
            throw new RuntimeException("Usuario no existe");
        }
        return actualizado;
    }
}


